home *** CD-ROM | disk | FTP | other *** search
Text File | 1995-04-11 | 53.7 KB | 1,196 lines |
- Archive-name: games/mud-faq/lp
- Last-modified: 95/03/07
- Version: @(#) rec.games.mud.lp Frequently Asked Questions (FAQ) 1.2@(#)
- Posting-frequency: monthly
-
-
-
- rec.games.mud.lp
- Frequently Asked Questions List (FAQ)
- written by George Reese (Descartes of Borg) 940711
- Last Modified: 95/03/07
-
- ******************************************
-
- This is a list of Frequently Asked Questions on the news group
- rec.games.mud.lp. All readers are strongly advised to read this FAQ
- before posting questions to the news group, as your question may
- already be answered in here. This FAQ will be posted regularly to
- rec.games.mud.lp.
-
- The rec.games.mud.lp FAQ is divided up into four sections:
- Section I: Introduction
- Section II: Playing LPMuds
- Section III: Coding on an LPMud
- Section IV: Starting Your Own LPMud
-
- In detail:
- Section I (Introduction)
- I.1 What sort of posts belong in rec.games.mud.lp?
- I.2 What is an LPMud?
- I.3 Isn't Amylaar an LPMud?
- I.4 Which is the real LPMud?
- I.5 How did LPMuds get started?
- I.6 What do the terms "alpha testing", "beta testing", and
- "fully open" mean?
- I.7 Where are some ftp sites with LPMud stuff?
- I.8 Is there anything about MUDs on WWW?
- I.9 What are some MUD related mailing lists?
-
- Section II (Playing LPMuds)
- II.1 How do I play an LPMud?
- II.2 How do I get a list of LPMuds?
- II.3 Are all MUDs in English?
- II.4 Ok, the MUD is asking me for a name, what do I do?
- II.5 They told me I had to register!
- II.6 Name and password set, what next?
- II.7 I don't want anyone knowing my email address!
- II.8 Is it asking me for MY gender?
- II.9 What does it mean by race?
- II.10 What is a class? What is a guild?
- II.11 I am in the MUD, what do I do?
- II.12 What are some common commands?
- II.13 What is an alias?
- II.14 Why doesn't the MUD save my equipment when I quit?
- II.15 What else is there?
- II.16 Why is the MUD admin ignoring me?
-
- Section III (Coding on an LPMud)
- III.1 What is coding?
- III.2 What is LPC?
- III.2 How do I get to code on an LPMud?
- III.3 How do I learn to code?
- III.4 What is TMI-2?
- III.5 How do I learn to code a room/monster/weapon/armour...?
- III.6 But you said that all MUDs use LPC!
- III.7 Can I take my area from LPMud X to LPMud Y?
- III.8 My code is not working! How do I fix it?
- III.9 What is an efun? an lfun? a kfun? a simul efun?...
- III.10 Can I code offline?
- III.11 How do I put my code into the game?
-
- Section IV (Starting Your Own LPMud)
- IV.1 How do I start my own LPMud?
- IV.2 How do I find a site?
- IV.3 Can I charge players to play my MUD?
- IV.4 Why can't I use any of the other servers or mudlibs?
- IV.5 Our system needs upgrading, can't I get donations?
- IV.6 I have a site, now how do I choose a server/mudlib?
- IV.7 Where can I find all this stuff?
- IV.8 Help! I can't get my driver to compile, what should I do?
- IV.9 I have applied patch XXX, and now nothing works anymore.
- IV.10 Can a MUD server run on DOS?
- IV.11 Can a MUD run under AmigaOS? OS/2? Windows NT? etc...?
-
- This FAQ is not intended to be a substitute for the general 3 part MUD
- FAQ's. I strongly recommend people new to MUDs read those first.
- This FAQ deals with a particular class of MUDs known as LPMuds, and
- therefore does not even attempt to cover information important to
- other classes of MUDs.
-
- Credits for information in this FAQ beyond the information provided by
- the author:
- Abigail, Stig Bakken, Jose Corrales, Felix Croes, Joshua P. Dady, Lars
- Duening, Monique Girgis, Pelle Johansson, Andru Luvisi, Joern
- Rennecke, Danne A Solli, Christina Sterman-Hack, Lars Syrstad, Pekka
- Timonen, Linus Tolke, John Viega, Petri Virkkula
-
- Section I: Introduction
- ******************************
- *** I.1 What sort of posts belong in rec.games.mud.lp?
- ALMOST anything dealing with LPMuds. Rule number 1 being that the
- topic of your posts must someway affect the LPMud community. We do
- not care about Dikus and MOOs and so on. They may be very nice
- servers, but if we wanted to be reading about them, we would be
- reading rec.games.mud.diku and so on.
-
- The second rule is to avoid posting on the following topics:
- a) Where is CheeseMUD? I have not been able to connect all day!
- If it is going to be down a long time, the admins should
- post to rec.games.mud.announce. Otherwise, it is either
- a short connection loss or it is just your problem. DO NOT
- POST THESE QUESTIONS HERE OR ANYWHERE.
- b) Advertisements for new MUDs.
- These belong in rec.games.mud.announce
- c) FascistMUD's admins are such jerks! They cheated...
- Why would you post this? I guarantee you will accomplish
- nothing by this. First of all, ALL MUD admins have bad
- days where they may do something very unfair. It is the
- nature of things. So you may be the unfortunate victim
- of a rare set of circumstances rather than of a mean admin.
- Secondly, even if the MUD admin is a jerk, no one on this
- newsgroup cares. People will play such MUDs either because
- the admin is damn good at creating a game or because the
- players are other jerks who like the atmosphere of lawlessness.
- Players like you may login from time to time, but eventually
- they will figure it out.
- d) Don't posts mudsex sessions. Those are for rec.games.mud.tiny.
-
- *** I.2 What is an LPMud?
- An LPMud is one of many classes of MUDs, or multi-user domains. A
- multi-user domain is defined solely with respect to its ability to allow
- multiple real individuals to come together in some sort of
- environment. Although the most common environment is a gaming
- environment, MUDs need not be games. In fact, among other uses of
- MUDs that I know of, there are virtual colleges, a MUD where victims
- of abuse can come together in a productive environment, and MUDs
- designed to bring students with disabilities into social contact with
- one another and others. The single defining theme for MUD is
- therefore being a virtual environment where multiple people come in
- contact.
-
- An LPMud specifically allows the users to manipulate the environment
- through a language called LPC. LPMuds are computer programs which
- listens to the internet for people attempting to connect, reads LPC
- files, and acts upon those LPC files according to the rules of the LPC
- language to create the virtual environment. Currently, I know of 6
- major LPMud servers: CD, DGD, LPC4, LPMud, MudOS, and Urimud.
-
- With most other MUD games, users do not have access to create in the
- language used by the MUD. LPC is used not only to give users such an
- ability, but it is also designed with both ease and power in mind.
-
- *** NOTE ***
- Rust has informed me that Urimud LPC has been renamed ROC. If it is
- in fact worthy of being renamed, then it is not an LPMud. Until I
- have more information on it, however, it will be included here.
-
- *** I.3 Isn't Amylaar an LPMud?
- Amylaar is a person, not an LPMud :). He is the primary author and torch
- bearer of the LPMud name. Given the generic sound of the term "LPMud"
- these days, people often refer to LPMud 3.2 as the Amylaar driver.
-
- *** I.4 Which is the real LPMud?
- LPMud 3.2 is the official continuation of the original LPMud server,
- however, all servers listed above (with the possible exception of
- Urimud) are equally real. All have two traits that make a MUD an LPMud:
- 1. The environment is created through files written in LPC.
- 2. The environment can change as new files are added and old
- ones changes, even while the game is running.
-
- *** I.5 How did LPMuds get started?
- I am not the greatest historian, and may be wrong on some important
- facts here, but this is the first shot at the FAQ, so here goes...
- Once upon a time, there was Lars Pensj÷ (the ÷ being an o with
- two dots over it... to an American, that is roughly pronounced "Penscha"), who
- wrote the original LPMud coming from an AberMUD background. If you
- play current LPMud's of the LPMud type, you won't really notice much
- of a difference from the original. From the coders' point of view
- however, LPC is nothing like it was with the original. For a long
- time, there was only LPMud run by Lars with patches by everyone under
- the sun. The original LPMud run by Lars was called Genesis. Its base
- town called Larstown was taken mostly from AberMUD.
-
- Eventually, others got tired of waiting to see their patches added to
- Lars' driver, and Lars was working on version 3.0 of his driver as he
- was gradually losing interest in the project altogether. Version 3.0
- turned out to be buggy as hell, and generally unworkable for a real
- LPMud. CD, LPC4, LPMud, and MudOS, all derive from this server as
- people saw good things in it and began creating working versions of
- LPMud 3.0 after their own concepts of MUD server design.
-
- Unlike the others, DGD was created from scratch. It therefore is
- missing a lot of the baggage which has come down from the beginning of
- time in the other drivers. Urimud, on the other hand, is derived from
- LPMud 2.4.5.
-
- *** I.6 What do the terms "alpha testing", "beta testing", and "fully
- open" mean?
- Generally, a MUD goes through three basic stages. The first stage,
- "alpha testing", is a developmental mode in which players are rarely
- allowed access to the MUD. Things are in such a disarray or in a
- flurry of changes that playing a consistent game is impossible. In
- the "beta testing" stage, a MUD is generally opened to players solely
- for the sake of testing that the MUD works. Without actual play
- testing, it is impossible to determine if a MUD can handle being fully
- open. MUDs in either of the above stages generally will not
- compensate players for mishaps due to bugs in the game, and they will
- often even purge players from the MUD. The purging is done either
- because old player objects are no longer compatible with new ones or
- because the MUD needs to be re-balanced to fit new code.
-
- In the final stage, "fully open", a MUD is just that, fully open.
- That means you can expect certain standards from the MUD, including
- such things as not dying from bugs. Nothing is ever bug free, so
- generally fully open MUDs will compensate players for mishaps which
- occur because of a bug. On the flip side, these MUDs usually also
- smite players who gain from bugs in the system.
-
- *** I.7 Where are some ftp sites with LPMud stuff?
- See Section IV: Where can I find all of this stuff?
-
- *** I.8 Is there anything about MUDS on WWW?
- The following is a list of LPMud related WWW URL's, a few of which are
- even written in the MUD programming language LPC:
-
- http://bat.cs.hut.fi/
- http://tmi-2.lp.mud.org:5550/
- http://www.lysator.liu.se:7500/no/mud/main.html
- http://www.imaginary.com/
- http://www.pvv.unit.no/viking/
-
- *** I.9 What are some MUD related mailing lists?
- The following lists use the majordomo software. To subscribe, mail
- majordomo at the sites mentioned with "subscribe list-name" in the
- body of your mail. To get more information on the lists below, mail
- majordomo at the site mentioned with "info list-name" in the body of
- the mail. Naturally, list-name should be replaced with the
- appropriate list name.
-
- intermud@imaginary.com
- lpc-language@imaginary.com
- nightmare-mudlib@imaginary.com
-
- Try a mail to Majordomo@ibr.cs.tu-bs.de with ``help'' in the body
- to get information on mailing lists for the LPMud 3.2 and 3.2.1
- drivers.
-
- Individual MUDs may have their own mailing lists as well. Check with
- your LPMud for details. For people running lists with an audience
- beyond a single MUD, please let me know of your list. If you use list
- software not listed, I need the name of the list, how to subscribe,
- and how to get more information.
-
- Section II: Playing LPMuds
- ******************************
-
- *** II.1 How do I play an LPMud?
- You must first find the internet address of the MUD you wish to play.
- Once you find the address, most often people use the "telnet" program
- to connect to this address. The MUD FAQ has an excellent section on
- MUD clients, which are alternatives to the plain vanilla "telnet"
- program. However, generally speaking, with "telnet", you can access
- the MUD of your choice by issuing the command:
-
- telnet address port
-
- For example (% is considered your prompt):
-
- % telnet nightmare.imaginary.com 1701
- % telnet 129.10.114.86 5555
-
- And so on. Some telnet programs do not allow you to pass arguments at
- the command line. Instead, you get something like this:
-
- % telnet
- telnet> open
- (to) nightmare.imaginary.com 1701
-
- Once you succeed, you will get a welcoming screen which should say the
- name of the LPMud and ask you for a name. A common error people will
- make is leaving off the number at the end. If you do that, the telnet
- program assumes you mean to go to port 23, and it will give you a
- login prompt to the host machine.
-
- In addition, *some* VMS telnet programs use the following syntax:
-
- telnet 129.16.50.30/port=1701
-
- *** II.2 How do I get a list of LPMud's?
- I know of no place that lists ONLY LPMud's, however, there is Doran's
- Mudlist, which is produced semi-regularly and lists MUDs by type. You
- thus have all your LPMuds grouped together. You can find it posted to
- rec.games.mud.announce.
-
- Additionally, there are many dynamic world wide web mudlists available.
- The two largest are:
- http://www.imaginary.com:1696
- http://tmi-2.lp.mud.org:5550
- Keep in mind, however, these lists hold only LPMuds which support
- intermud communication. They are by no means full lists. You will
- also find that many MUDs on this list are in some sort of
- developmental stage.
-
- *** II.3 Are all MUDs in English?
- No. To provide a list of such MUDs is beyond the scope of this FAQ.
- Check the mudlists for a full and current listing. However, I would
- like to know about other languages which might be supported in the
- LPMud world, so please mail me if you have a MUD in a language in
- other than English, German, or Swedish.
- Known languages:
- Dutch
- English
- German
- Swedish
-
- *** II.4 Ok, the MUD is asking me for a name, what do I do?
- Make up a name. Avoid using your real name or common names, real and
- mythical. You want not only to give character to your persona, but
- you also do not want everyone saying "Hey! Aren't you Bob from
- JustAnotherMUD"? I chose the name Descartes, because I was a
- philosophy major in college. In general, it is safe to assume any
- name consisting only of more than two characters and less than ten (a
- to z) is acceptable on any MUD. Some MUDs allow really long names with
- spaces, apostrophes, hyphens, and other marks. Others are in between
- the extremes. Try the name you want. If the MUD will not allow it,
- it will tell you, and it should tell you why.
-
- After making up a name, one of two things will happen. Either you
- will be prompted for a password, meaning you have picked a name
- someone else is using, or it will ask you to create a password,
- meaning you are a new character. If the first thing happens, just try
- again with another name. If the second happens, you are in good
- shape.
-
- To create passwords, make up one different than the one you
- use to access computers. Although MUDs encrypt passwords for storage,
- nothing prevents an unscrupulous MUD admin from intercepting that
- password and using it for unethical purposes. It is also recommended that
- you use a password with numbers and mixed upper and lower case
- letters in it.
-
- *** II.5 They told me I had to register!
- Some MUDs require all their players to register before being allowed
- to play. Also, it may be the case that someone from the same place as
- you has been causing trouble, so the admins of the MUD in question
- have decided to require only people from that site to register. If
- this is the case with the MUD you wish to play, simply follow the
- instructions they give. In most cases they will give you an email
- address where you should send your registration.
-
- *** NOTE ***
- There seems to be some difference of opinion on this one, so I decided
- to quote one of the comments:
-
- "Well, I have to disagree with this section: E-mail addresses are very
- difficult to verify in bulk, and really not worth the trouble unless
- you perform site registration. I believe the only people you have a
- legitimate need for an email address from is your wizards. Other than
- that, knowing the ip they log in from should be more than sufficient."
- -Rust (John Viega)
-
-
- *** II.6 Name and password set, what next?
- This is where you get to see why there is so little in common among
- LPMuds from the player's point of view. Some LPMud's will ask you a
- series of questions about who you are and what sort of character you
- would like. Others ask nothing more. Among the questions you might
- be asked are: what is your email address? what is your real name?
- what gender would you like to play? what race would you like to be?
- what class would you like to be? etc.
-
- *** II.7 I don't want anyone knowing my email address!
- MUD Administrators have a legitimate need to know your email address.
- No one else does. If a MUD requires you to give your email address it
- should either offer you the option of keeping it private, or it should
- automatically keep the email private. If they do not keep your email
- private and you desire privacy, do not play the MUD. Do not complain,
- however, that they ask for it.
-
- *** II.8 Is it asking me for MY gender?
- No. The game wants to know what gender you would like your
- *character* to be. This means you can play a character of the
- opposite gender, your own gender, or one of the alternate gender types
- which might be offered. The other side of the coin to this, however,
- is that you should *never* count on other people in real life being
- the gender of the character they play.
-
- *** II.9 What does it mean by race?
- Many LPMuds have a feature called character races. The term "race" in
- these instances is not the same as the term used in modern society.
- In fact, the LPMud term race would more correctly be referred to as
- species. In fantasy type LPMuds, you will often see a selection of
- "races" like human, orc, artrell, gnome, etc. When you are asked to
- choose a race, a list of possible races should be provided for you.
-
- *** II.10 What is a class? What is a guild?
- In general, a class is a grouping of players with common abilities. A
- guild as well can be said to have the same definition. Many MUDs, if
- they use either of these concepts at all, add some very individual
- nuances. To MUDs which do not have classes or guilds, the concepts
- are naturally irrelevant. Those which have one or the other are often
- using the terms in an interchangeable fashion. Finally, those MUDs
- which have both often define class in a more generic manner than
- guild. For example, on Nightmare, a class is like a profession and
- the guild like a particular job. You might have people in the fighter
- class who are in the templars guild, and others who are in the rangers
- guild. In short, the guild is a way of specializing your class abilities.
-
- Other MUDs allow "multi-classing", which may mean joining multiple
- guilds, classes, or both. It is always best to check out the "help
- guild" and "help class" command on any given MUD to see how it defines
- these terms.
-
- *** II.11 I am in the MUD, what do I do?
- There is no one answer to this question, as the answer will vary from
- MUD to MUD. No matter what, however, you should see if the MUD has a
- "faq" command to get a listing of that MUD's frequently asked
- questions. In addition, you should learn how to use the "help"
- command as well as find out about the rules governing that MUD.
-
- *** II.12 What are some common commands?
- The following commands exist on virtually all LPMuds:
- (Naturally, these are not cmmands on non-English MUDs)
-
- help ([topic])
- Gives you help. The () indicate that you do not need to type in a
- topic. If you do, you get help on that topic. If you just type help,
- you will either get help on where to find other help, or you will be
- put into a help menu.
-
- tell [player] [message]
- Sends the string [message] to the player whose name is [player]
- anywhere on the MUD. Some LPMuds do not allow players to tell to one
- another as it is viewed unrealistic.
-
- say [message]
- Sends [message] to everyone who is in the same MUD room as you.
- This command is almost always aliased to "'", such that "'hi!" is the
- same thing as typing "say hi!".
-
- who
- Gives you a list of everyone connected to that MUD.
-
- look
- Gives you a description of the MUD room in which you are in.
-
- look at [object]
- Gives you a description of the object in question.
-
- II.13 What is an alias?
- As with UNIX, most LPMuds provide some sort of method for creating
- "aliases". An alias is simply a way in which you can have a easy to
- type command represent another command. For example, you will often
- want to type the phrase "get all from corpse" on any LPMud. It is
- much easier to make an alias so that whenever you type "gac", the
- LPMud interprets that as "get all from corpse".
-
- In order to create aliases, you need to know how your particular MUD
- handles aliasing. Older MUDs use a device called a quicktyper. Newer
- MUDs have alias commands built in. Try issuing "help alias" and "help
- quicktyper" commands in order to find out how aliases are handled on
- your MUD. If your MUD uses quicktypers, you will have to go find the
- quicktyper object before you can create aliases. Ask any other player
- on such a MUD where there quicktyper can be found.
-
- *** II.14 Why doesn't the MUD save my equipment when I quit?
- Balancing a MUD so that everyone is not dripping in wealth and that
- all players actually have a chance to die is hard work. It is nearly
- impossible. One thing that makes it easier on balance admins is the
- non-permanance of objects (in other words, objects do not save). For
- a MUD to save equipment, it requires a complete rethink of the way
- that MUD is balanced.
-
- It goes beyond the difficulty of balancing the MUD however. There are
- MUDs which do save equipment. The character of the game itself
- however gets changed by what appears to be a simple change. Therefore
- asking your mud admin, "can't you change the game so that it saves
- equipment" is not so simple or limited as it might seem. To make such
- a change to an existing MUD would actually change that MUD in such a
- way as it would be unfamiliar to you.
-
- Putting it simply, saving equipment is not an impossible thing.
- However, the consequences of doing so are way beyond what most players
- are capable of realising unless they have been involved with MUDs
- before. To do so on an existing MUD would change it forever. Every
- now and then, new MUDs appear with this feature. But most do not and
- will not.
-
- *** II.15 What else is there?
- Explore the MUD! Most gaming MUDs have places called "newbie" areas
- which are simplistic places for people new to the game to go and get
- the hang of things. When you first log in to a new MUD, you should
- ask the others where the newbie area is. Also, read the login screen
- and news which scrolls across your screen at login time, as they
- contain important information about characteristics unique to the MUD
- you are playing.
-
- Ask people questions. Just make sure you have read the help files
- first, or you will be sure to annoy someone. In addition, try not to
- choose a single person for your queries. Constantly being asked
- questions by the same person can often annoy people as easily as
- stupid questions.
-
- *** II.16 Why is the MUD admin ignoring me?
- Admins in particular are prone to a MUD disease called "idling". This
- means that the lights are on, but nobody is home. An idle person is
- simply someone logged in to the game, but who is perhaps not actually
- at their computer terminal. That person is thus not really ignoring
- your question, since the person is never actually seeing it.
-
- If the admin is not idling, chances are that person is being
- overwhelmed with questions or is actually coding online. Many LPMuds
- will tell you that the person to whom you are talking is "idle" or
- "editing". If you get that response to a tell, do not expect an
- answer back right away. In addition, if it says the admin is editing
- (or anyone else for that matter), then it is generally considered rude
- to continue telling to that person as it makes it difficult for the
- person to edit.
-
- Amylaar says:
- "Another possibility is that this person is at the terminal, but the
- window for the mud you play is not in the visible area, or it is, but
- players are shouting so much that this window is mostly ignored. Some
- people don't mind being 'beeped' (sending a ^G in a tell or say, or
- with a special tool), and will then notice that there is something in
- this window. Note, bowever, that others feel very strongly against
- this, so that it is a good idea to check out first with somebody
- resposive if it is right to beep that particular person."
-
- Section III: Coding on an LPMud
- ******************************
-
- *** III.1 What is coding?
- Coding is writing files for the computer to read. In the case of
- LPMuds, this means writing files in a computer language called
- LPC. The LPMud server reads these files and interprets what those
- files are telling the computer to do when certain player actions
- occur. Often that means things like displaying a
- description of a room when you enter it and so on. The LPC files
- which make up the backbone of any MUD are called the mudlib. Coders
- use the mudlib code in such a way as not to have to rewrite many of
- the most common instructions over and over again. With most good
- mudlibs, therefore, there is more creation involved than coding.
-
- *** III.2 What is LPC?
- LPC is an object building language created by the author of the
- original LPMud server, standing for Lars Pensj÷ C. Structurally, it
- is much like the more popular programming language C. Designed with
- LPMud object building specifically in mind, it puts the power of game
- building in the hand of the general user.
-
- *** III.3 How do I get to code on an LPMud?
- Policies vary from MUD to MUD. Some MUDs require you to make a
- certain player level before being allowed to code. Others require you
- to pass a test or fillout an application. Still others just let
- anyone come on and code. If you really want to get in on things, the
- best thing to do is either to talk to the admins of the MUD you are
- playing, or go to TMI-2 (tmi-2.lp.mud.org 5555) and check out the
- board they have of new MUDs starting out needing coders. Keep in mind
- that many MUDs which are open to players already have more coders than
- they need.
-
- *** III.4 How do I learn to code?
- There are two parts to learning how to code on your MUD: 1) learning
- LPC and 2) learning your MUD's mudlib. Each MUD should have detailed
- documentation on part 2. Two LPC textbooks, a beginner and an
- intermediate, exist to take care of part 1. You can get the textbooks
- via ftp at:
- ftp://ftp.imaginary.com/pub/LPC/doc
- They come in many different formats.
-
- Documentation, however, will not really do anything without looking at
- examples, practicing, and talking to more experienced coders. Examples
- should be everywhere on your MUD (though they are not necessarily good
- examples). Practicing is simply just copying code you do not
- understand, making small changes to it to see what they do, and
- learning from what happens. To learn more about how to code from
- others, talk to more experienced coders on your own MUD or visit TMI-2
- which has a centre designed for teaching LPC.
-
- *** III.5 What is TMI-2?
- TMI-2 is a place centered around the advancement of LPMud "technology"
- and the promotion of its use in all spheres. TMI-2 stands for "The
- MUD Institute". You will often find many of the people responsible for
- creating most of the C and LPC servers on which the MUD world runs,
- and at times, they might even not be idle! It is an excellent place
- to discuss ideas and learn more about LPC and LPMuds.
-
- *** III.6 How do a I code a monster/room/weapon/armour...
- Read your MUD's documentation, as this varies greatly from MUD to MUD.
-
- "Also, questions like that are almost impossible to answer in any
- other way than showing an example. Thus, a much better question is:
- 'Where can I find an example of how to create a XXX?' or 'I don't
- quite understand this part of the example on how to...'"
- -Drevreck (Lars Syrstad)
-
- *** III.7 But you said all LPMuds use LPC!
- Yes, they do. However, they do not all use the same mudlib. The
- mudlib is the basic LPC files you make use of then you write your LPC
- files. The LPMud server in turn interprets your files and stores
- them in memory. Two MUDs using different mudlibs therefore can be
- wildly different from one another. And since the mudlibs are so
- different, the files you will write will be equally different.
-
- An analogy might be that of a human dialect. Quebecois French and
- Continental French often use different words and such in order to
- express ideas. In spite of this, the language structure is the same.
- So, both are still French even though you sometimes need to say
- different things in order to mean the same thing.
-
- In writing an object in LPC, you are almost always using the mudlib's
- LPC files rather than totally writing files from scratch. You do this
- through something called inheritances. Inherited code which exists on
- one mud may not exist on your mud, or may exist differently.
- Therefore when you try to use that code, it will not work as you
- expect even though both are in LPC.
-
- *** III.8 My code is not working! How do I fix it?
- 1) Determine if the problem is with:
- a) the object failing to load
- b) the code causing an error when it runs
- c) no errors, it is just the expected things do not happen
- 2) Ok, you know what "type" of error you have. Now you need to
- isolate it. Isolating it depends on the type of bug...
-
- a) the object fails to load. You have the bug isolated for you you in
- your error file. The location of the error log depends on the file
- name of the object with the error. It also depends on the way your
- mudlib logs such errors. Nightmare, for example, logs compile errors
- to /log/errors/std for obejcts in /std, etc, and /log/errors/descartes
- for objects from /realms/descartes. TMI-2 would log my errors to
- /u/d/descartes/log. I am not sure where the put mudlib errors. I
- *know* with MudOS the driver does isolate the error for you to a
- useful degree of certainty. More on this later.
-
- For LPMud 3.2.1, you can use the:
- #pragma verbose_errors
- preprocessor directive to make compile time errors include a bit of
- context in error messages. Some mudlibs turn this #pragma on by
- default.
-
- b) an error occurs during execution. These are logged in the mud's
- runtime error logged, and they ALWAYS reflect the exact line where
- something happened. On MudOS muds before 0.9.20, the system runtime
- log was /log/debug.log. The mudlib in later versions has the option
- of naming it whatever.
-
- Amylaar says:
- "Brought over from LPMud 3.[01].x , LPMud 3.2 uses
- /`hostname`/debug.log. LPMud 3.2.1 allows you to pass the option
- --debug_file to change this default. If there is a triple fault (i.e.
- an error while the master was processing an error in error
- processing), and you compiled the driver with the TRACE_CODE option,
- there will also be a trace of the last instructions executed.
- Moreover, if the driver is not out of memory, and there is no triple fault,
- the apply runtime_error() is called in the master, with the error message,
- file name, object name and line number as arguments."
-
- Note that for drivers which can compile LPC code to C and then link it
- into the driver, no line number information will exist to help you in
- debugging. You should therefore debug your LPC code thoroughly before
- compiling it to C.
-
- c) no errors, you just do not get expected results. These are the
- hardest to debug. You need to go through the code and test
- i. WHICH CODE IS BEING EXECUTED
- ii. THE VALUES OF THE VARIABLES IN THE EXECUTED CODE
- How do you do this? Take the following code with a priveledges bug...
-
- /* from /cmds/adm/_rid.c */
-
- int cmd_rid(string str) {
- if(!archp(previous_object())) return 0;
- if(!str || !user_exists(str = lower_case(str))) return 0;
- if(!((int)USERS_D->rid_user(str))) return 0;
- message("system", "You rid "+capitalize(str)+".", previous_object());
- return 1;
- }
-
- /* EOF */
-
- /* /secure/daemon/users.c */
-
- int rid_user(string str) {
- return rm(DIR_USERS+"/"+str[0..0]+"/"+str+SAVE_EXTENSION);
- }
-
- /* OTHER CODE DELETED FOR BREVITY */
-
- This is not real code (as a lot more should exist in such an
- operation). However it does serve the point. This code will load
- fine and execute without error. However, it will not delete the save
- file of any user. If anyone executes it, the following will happen:
-
- > rid weenieplayer
- What?
- >
-
- So what do you know? You know you typed "rid weenieplayer", and you
- know you got 0 returned. One of the following things happened:
-
- 1) The "rid" command never got executed.
- 2) The archp() returned false for the person executing the command.
- 3) For some reason, str was equal to 0.
- 4) rid_user() in users.c returned 0 to the command.
-
-
- How do you know if 1 is the problem?
- put the line...
- write("rid command executed") as the first line of the cmd_rid()
- function in the rid command. If the rid command is executed, you will
- see that it is executed before you see "What?". If it is not, you
- will just see "What?". If you do not see that line in write(), then
- you know your bug is with you whatever calls the "rid" command. If
- you do, then you know you must proceed further.
-
- Do the same after each line which returns 0. Make sure each write()
- string is unique so you know *which* line is being written out. This
- will tell you exactly *which* line is returning 0 in the rid command.
-
- In this case, it is #4 which is the problem. The users daemon is
- returning 0 for for rid_user(). This means that rm() is definitely
- returning 0. rm() only returns 0 when an rm fails. rm() only fails
- when an object does not have proper access. Therefore, in this case,
- you need to fix the bug in your security.
-
- If for some reason you cannot go editing the files in question (i.e.
- they are in the base lib files to which you have no access, changing
- them would be even more troublesome, etc), you should consider the
- efuns trace() and traceprefix().
-
- Do you need to go through all of these tedious steps? No, you can
- generally make good guesses as to where to look the more familiar you
- become with the code. For example, in this case you pretty much could
- have elimited step 1 if that command is an old command which used to
- work. After all, it is highly unlikely that the mud would suddenyl
- stop executing that one command!
-
- Furthermore, if you had just made a change to the security system, you
- would immediately suspect that rm() failed and thus would have checked
- that first.
-
- This is why presenting me with your entier rid command would have been
- useless to me. I would have looked at it and said it *looks* ok. But
- I have no idea what changes you have recently made to your mud, nor do
- I know from looking at the code which of those lines is returning 0.
- I can only basically tell you that one of those lines is failing.
-
- However, if you were to tell me that for some reason your user object
- was returning 0 in trying to rm() the user file during the rid
- command, I could tell you details about the relevant parts of NM
- mudlib security to this daemon. And then you could use that
- information to debug further and ultimately fix the bug.
-
- *** III.9 What is an efun? an lfun? a kfun? a simul efun?...
- For any function in LPC, there are three distinct parts...
- 1) the prototype
- 2) the call
- 3) and the definition
-
- Whate differentiates all of these different types of functions is
- *where* they are defined. The definition of the function is the part
- which says what it does. Therefore:
- 1) afun: Auto function (DGD only)
- the function is defined in the auto object and behaves like
- and efun from other drivers. This function is really a
- very special type of lfun.
- 2) apply
- a function defined in the mudlib designed to be called only
- by the driver. All applies are also lfuns. Most of the
- functions in the DGD's driver object and other's master
- object are applies. In addition, the functions create(),
- init(), and reset() are also applies for LPMud 3.2 (not
- 3.2.1), MudOS, CD, and Urimud.
- 3) efun: external function
- this type of function is defined external with respect to
- the mudlib. In other words, in the driver. Since it
- is defined inside the driver, it is faster, but the
- mudlib is left with little control over what it does.
- 4) kfun: kernel function (DGD only)
- This type of function is much like an efun in that it
- is defined external to the mudlib in the driver kernel.
- There are some ways beyond the scope of this FAQ in which
- kfuns differ from efuns, ways which have little bearing to
- daily coding.
- 5) lfun: local function
- Any function defined inside an object in the mudlib. The
- functions you write (like create() or reset()) are lfuns.
- 6) simul efun or sefun: Simulated External Function
- lfuns defined in an object known as the simul efun object.
- Any object in the mudlib is allowed to use these functions
- as if they were efuns (treat them like local calls).
-
- You might also want to keep in mind the difference between a local
- call and a call_other. A local call is a call to a function defined
- in your object or to one of the objects it inherits. A call other is
- a call to a function defined in another object. Efuns and simul
- efuns, though not defined in your object, act like local calls. Afuns
- and kfuns are in fact local calls, since all objects inherit the auto
- object to which they are local.
-
- *** III.10 Can I take my area from LPMud X to LPMud Y?
- Can you? If they use the same mudlib, yes.
- May you? Often MUDs have restrictions against importing code in order
- to keep the MUD unique.
-
- *** III.11 Can I code offline?
- This is a question best left to your admin, but in general, the answer
- is yes. The advantages to coding offline are that you can use a
- visual editor like vi or emacs or *giggle* TeachText on your local
- machine where speeds are much faster. The disadvantages are that you
- do not get the immediate feedback on how your server works that you
- get online, and you have to take the extra step of using ftp to
- transfer the files from your home machine to the MUD. In order to
- know if you really can code offline or not, you need to find out from
- your MUD's admin if there is a way to ftp code into the MUD.
-
- You might also want to consider getting a local copy of your mudlib to
- run on your computer at home.
-
- Abigail also points out:
- "Actually, there is a way to code off-line without needing to ftp. If
- you have 2 windows and a mouse you can use to cut-and-paste text, you
- can make your file off-line in one window, and when you are done log
- in to the mud on the other window, start ed with the desired
- file-name, give the append command, and use cut-and-paste to copy the
- contents of the file form on window to another. Then close the ed
- session. For me, it is usually the fastest method to create small
- files (up to 100 lines), or to make patches."
-
- *** III.12 How do I put my code into the game?
- A file is considered "in the game" if another file already visible to
- players references it. So, to put your stuff in the game, you need to
- change code already in the game to reference your code. This action
- normally requires the action of MUD administrator. Most MUDs have
- some sort of quality control policies which state rules for having
- your code reviewed.
-
- Section IV: Starting Your Own LPMud
- ******************************
-
- *** IV.1 How do I start my own LPMud?
- 1) Come up with a unique and interesting idea
- 2) Find a site
- Either:
- 3) Choose a server
- 4) Choose a mudlib
- Or:
- 3) Choose a mudlib
- 4) Choose a server
- Or:
- 3) Choose a server
- 4) Write your own mudlib
- Or:
- 3) Write your own server
- 4) Write your own mudlib
- 5) Define administrative policies
- 6) Find people to code areas for the MUD
- 7) Get some areas completed
- 8) Open to players (generally a good idea to beta test)
-
- *** IV.2 How do I find a site?
- The most common method is to talk to the administrator of the machine
- from which you access MUDs and the rest of the Internet. If the
- resources are available, they will often allow you to run your MUD
- server unless something political like a no-games policy is
- preventing it. If you are not running a MUD as a game, however, this
- is not relevant.
-
- Never run a MUD without talking to your system administrator. LPMuds
- take up a lot of system resources, and many places simply cannot spare
- those resources on a single project, especially if the project is
- non-essential to the functioning of the entity running the machine.
- Not only is it just plain wrong to run a MUD without permission, it
- also predisposes sysadmins to saying no to people who ask them when
- the resources are free.
-
- If you cannot run it on your local machine, post a note on the
- sites-wanted board at TMI-2. Do not post to USENET newsgroups unless
- you have a working MUD. It does not need to be complete, but posting
- notes saying "I have a cool idea, will someone give me a site" is
- inappropriate, unless that idea is completely fleshed out with some
- sweat in the form of work on paper and such.
-
- Another avenue of finding a site is talking to local internet access
- providers. Often, they have extra small machines on which a MUD could
- be run (sometimes for a fee). The most expensive route is to buy your
- own machine and your own Internet hookup.
-
- *** IV.3 Can I charge players to play my MUD?
- If you write the server from scratch AND you wrote your mudlib from
- scratch and you have agreements with the coders who wrote areas on
- your MUD, the answer, of course, is yes. The above will take roughly
- 3-5 years of full-time work to accomplish as well :).
-
- If you do not wish to go through 3-5 years of developing your own
- server and mudlib, then your only choice is to use the DGD LPMud
- server and pay its creator, Dworkin, a monthly fee. You will also
- have to develop your own mudlib, as no mudlib currently exists for DGD
- which can be used commercially.
-
- *** IV.4 Why can't I use any of the other servers or mudlibs?
- They all come with some variation of the same copyright. Since all
- drivers except DGD were derived from LPMud 3.0, they all require a
- copyright at least as strict as that one, which basically states that
- you can use the server as you like, so long as you do not make a
- profit off of its use. Most current servers have much more strict
- and explicitly copyrights. On top of that, many of the mudlibs which
- exist also have similar copyrights. To require money of your players
- is therefore a violation of international copyright laws.
-
- *** IV.5 Our system needs upgrading, can't I get donations?
- Yes, you can request that your players donate money as long as the end
- of that money is to run the MUD and donations are not a prerequisite
- for play on the MUD. In other words, they must be donations, not
- fees.
-
- *** NOTE ***
- I am not a lawyer, nor am I the author of all the MUD code out
- there... Therefore, keep in mind that what I am saying about
- copyrights is my interpretation and not binding upon ANY of the
- server or mudlib authors out there. For reference to what is binding
- with respect to my code, see the copyright notice which accompanies
- it.
-
- *** IV.6 I have a site, now how do I choose a server/mudlib?
- Some people have a favourite mudlib, and therefore go at building
- their own MUD from the angle of using that mudlib. Others have a
- favourite server and start from that angle. Others simply want to
- start a MUD fast, while others want to really tinker with it and make
- it their own. The following is a rough guide to what is out there:
-
- *** NOTE ***
- In this section, I make two uses of the word "native". In one sense,
- I use the word alone when referencing whether a mudlib is "native to"
- a particular driver, meaning that it was written to work specifically
- with that driver. The opposite of native in this context is
- non-native. The other use is in the sense of "native mode", meaning
- LPMud 3.0 style. Native mode is often identified through the use of
- UID security and other 3.0 features. The opposite of native mode is
- compat mode, which means LPMud 2.4.5 compatible.
-
- *** Servers (drivers) ***
- CD
- Generally considered a slow driver, however it is designed to work
- very closely with the CD-lib. Therefore tests showing the CD driver
- to be slower are not necessrily fair as sole factors since they are
- mudlib-independent tests. The CD-lib is considered a well designed
- lib which is often a factor which leads people to choose this server.
- To see a CD server MUD, visit Genesis.
-
- DGD
- DGD is built on the belief that small is good. This is absent of much
- of the extra baggage which exists in all other drivers since it was
- created from scratch. There currently exist two native mudlibs for
- DGD, one of which is a MOO simulation. DGD's documentation is sparse. It
- does support compile time LPC->C compiling, meaning that when you
- compile the driver you can have some of your LPC files converted to C
- and compiled with the driver. In addition, unlike other LPMud
- servers, it is disk-based, meaning you can run a huge MUD on
- virtually no RAM. You therefore never need to reboot or save objects.
- Dark has written intermud support for DGD which can be gotten
- separately from the driver.
-
- LPC4
- Maintained by Profezzorn, it supports a scripting feature that allows
- you to execute LPC files as atomic programs without running the MUD in
- the traditional sense. In addition it features lambda closure types
- which are actually understandable to most people. It is designed for
- speed through the philosophy of creating large numbers of efuns to
- perform CPU intensive work. It runs only in native mode. I know of no MUDs
- using this driver in practice. LPC4 also has socket efuns with TCP support.
-
- LPMud
- Considered the fastest of all the LPMud drivers, it supports both
- compat mode mudlibs (like LPMud 2.4.5) and native mode mudlibs (like LPMud
- 3.0). It also has closures which are beyond general ease of
- comprehension. There are few mudlibs in wide release native
- to this server.
-
- MudOS
- The most feature-filled of the LPMud drivers, this one comes with TCP
- support for mudlib objects allowing you things like WWW, finger, SMTP,
- USENET, and other such access to Internet resources from inside the
- mud. It also comes with a choice of well-developed mudlibs native to
- the server. MudOS allows you to choose between UID support and
- no-UID support, which makes it easy to hack a LPMud 2.4.5 MUD to work
- with MudOS if that is your cup of tea. Though significant speed gains
- have been made recently, LPMud 3.2 is still faster. MudOS supports a
- new function pointer syntax which is as functional as LPMud's closures
- without LPMud's obscure closure syntax.
-
- Urimud
- Urimud is descended directly from LPMud 2.4.5, as opposed to the other
- LPMud's (except DGD, which is created from scratch), which are all
- descended from LPMud 3.0. Its most prominent feature is that it can
- handle running multiple MUDs on a single process.
-
- *** mudlibs: ***
-
- CD-lib
- I am told this is a very well-designed mudlib. Some features of it
- are an enhanced sense of reality through player recognition (you must
- make the acquaintance of players before knowing who they are) and UDP
- intermud communications.
- Runs under: CD (native)
-
- Discworld
- Advanced command parsing system and user interface, as well as many
- concepts you will not see in other mudlibs for any server. Too many
- frogs and wombles.
- Runs under: MudOS 0.9.20 (native)
-
- Foundation I
- A basic mudlib with nothing extra for people who want a solid design
- base from which to design a unique mudlib. No combat or anything else
- fancy is included. Nothing about it is pre-disposed towards fantasy
- or even game playing for that matter. On the positive side, there is
- nothing to deconstruct in order to build your own mudlib and there is
- more of a solid base to work from than something like Lil. The
- downside is that you will have to put in a lot of work to make a
- playable game from this.
- Runs under: MudOS v20.23 (native)
-
- Heaven 7
- Runs in both compat and native modes with autoconfiguration for
- whichever driver you are chosing. Since it runs under 3 different
- drivers, you have the advantage of portability. Security under native
- mode is questionable, and it does not take full advantage of any one driver.
- Runs under: LPMud 3.1.2 (native), LPMud 3.2 (non-native), MudOS (non-native)
-
- Lil
- A small, essentials only mudlib. Designed basically to give you
- examples of files as they must minimally be for the MudOS driver to
- run. Only useful if you plan really to write something totally from
- scratch.
- Runs under: MudOS (native)
-
- LPMud 2.4.5
- The most well-known mudlib in existence. It is rather simple, not the
- best design, but if you know it, it is useful. Also, the widest range
- of drivers support it. Good for putting up and running a MUD quickly.
- It is very ancient and inferior in design, flexibility, and
- functionality to modern mudlibs.
- Runs under: DGD (non-native), LPMud 3.2(non-native), LPC4 (non-native)
-
- Mellville
- Designed for DGD. I know absolutely nothing at all about it.
- Runs under: DGD (native)
-
- Nightmare 3.3.1
- Nightmare is good for getting a mud up and run quickly for those who
- are not necessarily experts and has an easy to handle intermud system.
- It has a limbed-combat system, however, this system is not the most
- effecient and is considered difficult to modify. Nightmare has a
- stack based security system that gets away the flaws of UID-based
- security. Also comes with WWW support. Just to be clear about
- everything, however, I wrote this lib, so understand from which point
- of view I am commenting.
- Runs under: MudOS v20.23 (native)
-
- TMI-2 1.2
- Generic, designed for those who want to tinker around with their
- mudlib rather than get a MUD up in no-time flat. Designed to be
- easily modified and comes with a full-range of intermud support as
- well WWW support. Features include the ability to take over monster
- bodies.
- Runs under: MudOS v20.23 (native)
-
- TubMUD
- Very intricate, and, according to Rust, "it is beautiful if you can
- figure it out." Intended more for Tub wizards to run at home than for
- wide-release.
- Runs under: LPMud 3.2 (native)
-
- If I have missed a lib, or stated something incorrect about your
- server or mudlib, or simply ommitted something, don't go flaming me.
- Email me the correct information so I can include it in the FAQ. I
- did my best to be fair in this, but in simply undertaking this task I
- have opened myself up to flames from anyone who I might have gotten
- wrong or simply does not like what i said. So please be gentle, and
- understand I mean no malice or ill-will anywhere in there!
-
- *** IV.7 Where can I find all this stuff?
- The following are important ftp sites:
-
- *** NOTE ***
- The sites listed are PRIMARY sites.
- First try a site on your side of the Atlantic before attempting to
- download across the ocean. If you have any troubles looking for
- something, always check out the following ftp sites for LPMud junk:
- actlab.rtf.utexas.edu
- bat.cs.hut.fi
- ftp.ccs.neu.edu
- ftp.lysator.liu.se
- ftp.imaginary.com
-
- servers:
- CD: ftp.cd.chalmers.se
- DGD: ftp.lysator.liu.se /pub/lpmud/drivers/dgd
- LPC4: ftp.lysator.liu.se /pub/lpmud/drivers/profezzorn
- LPMud 3.2: ftp.ibr.cs.tu-bs.de pub/games/lpmud/*3.2*@*.tar.gz
- MudOS: ftp.imaginary.com /pub/LPC/servers/MudOS
- Urimud: ftp.netcom.com /pub/urimud
-
- mudlibs:
- Basis: actlab.rtf.utexas.edu
- CD: ftp.cd.chalmers.se
- Discworld: ftp.ccs.neu.edu
- Foundation: ftp.imaginary.com /pub/LPC/lib/Foundation
- Lil: actlab.rtf.utexas.edu
- LPMud 2.4.5: ftp.lysator.liu.se
- Mellville: ftp.ccs.neu.edu
- Nightmare: ftp.imaginary.com /pub/LPC/lib/Nightmare
- TMI-2: ftp.ccs.neu.edu
-
- *** IV.8 Help! I can't get my driver to compile, what should I do?
- Thanks to Rust for putting together an answer for this question.
-
- First of all, learn how to redirect stderror to a file if you don't
- already know how, or at least find a computer where you can cut and
- paste. Then, you have 3 options for getting these errors to a more
- experienced driver person:
- a) You can try The Idea Exchange or TMI-2, two MUDs dedicated to MUD
- development, where people who may be able to solve your problem,
- or at the very least you can post it on your target driver's
- board on TMI-2 or the appropriate newsgroup on The Idea
- Exchange, where they will be seen by knowlegeable people
- fairly quickly.
- b) You can post it to this newsgroup, but don't cross post, and it
- probably wastes a lot more bandwidth on this newsgroup than on
- The Idea Exchange or TMI-2.
- c) you can mail the maintainers of your driver:
- 3.2: amylaar@meolyon.hanse.de
- MudOS: tim@hollebeek.hep.upenn.edu, apang@actlab.rtf.utexas.edu
- CD: jacob@dd.chalmers.se
- DGD: dworkin@hippolytos.cd.chalmers.se
- LPC4: hubbe@lysator.liu.se
- URIMUD: urimud@netcom.com
-
- For MudOS help, you are most likely to get a timely response by
- posting to the MudOS newsgroup on The Idea Exchange (imaginary.com 7890).
- For 3.2 help, and probably DGD and URI help as well, you're probably
- more likely to get a timely response by posting on the proper board on
- TMI-2, since the creators and the people who use their drivers tend to
- congregate there. For LPC4, your best bet is direct mail, for CD,
- either direct mail or visiting Genesis and mailing Tintin et al, and
- for DGD you might also want to visit the pattern:
- epsilon.me.chalmers.se 6047
-
- *** IV.9 I have applied patch XXX, and now nothing works anymore.
- (Answer from Joern Rennecke) Have you supplied the proper -p option to
- patch? If not, you might end up with a patch applied to the wrong
- file. Check with the appropriate man page to "patch" for more details.
-
- *** IV.10 Can a MUD server run on DOS?
- Yes, most of the servers have DOS binaries available. In addition,
- most of the mudlibs have had their files arranged and ported so they
- fir in the FAT 8.3 naming scheme. If you wish to allow others access
- to the MUD over modem lines, be sure to get the comdrv17.com file with
- your server and mudlib. For those who choose mudlibs with colours in
- them, the current batch of drivers was compiled in such a way that the
- drivers do not send output through ANSI.SYS (thus no colour).
-
- *** IV.11 Can a MUD run under AmigaOS? OS/2? Windows NT? etc...?
- These are the ports of which I am aware:
-
- AmigaOS:
- DGD
- LPMud 3.2
- MudOS
-
- Atari:
- DGD
- LPMud 3.2
-
- System 6 & 7:
- MacMud 3.2 which is LPMud 3.1.2 (MacTCP required)
-
- OS/2:
- LPMud 3.2
- MudOS
-
- Windows NT:
- Ha ha ha ha! Nothing runs on Windows NT!
-
- **********
-
- Please mail corrections or additions to the address in my .signature.
- --
- George Reese (borg@imaginary.com) http://www.winternet.com/~borg/
- phone/fax: (612) 829-5495 ftp://ftp.imaginary.com/users/borg
- "No one ever conquered Wyoming from the left or from the right."
- -Camper Van Beethoven
-